package lib

func init() {
	Probs = append(Probs, Problem{
		Num:         1702,
		Discription: "修改后的最大二进制串",
		Level:       2,
		Labels: map[string]int{
			"贪心":    1,
			"双指针滑动": 1,
		},
	})
}

//00可变10  10可变01
//思路：尽可能地让高位的0变为1
//从左往右，找到第一个0，再往右找第二个0
//利用10变01将两个0排到一起，然后变成10
//更新第一个0的位置，继续找第二个0
//知道越界
func MaximumBinaryString(binary string) string {
	s := []byte(binary)
	i := 0
	first0 := -1
	for i < len(s) && s[i] == '1' {
		i++
	}
	first0 = i
	i++
	for i < len(s) {
		for i < len(s) && s[i] == '1' {
			i++
		}

		if i >= len(s) {
			break
		}

		second0 := i
		s[first0] = '1'
		s[second0] = '1'
		s[first0+1] = '0'
		first0++
		i++
	}

	return string(s)
}
